/**
 * 表单验证,依赖:
 * "vue" : "/web/js/vue/vue2",
 * "vee-validate" : "/web/js/vee-validate/vee-validate.min",
 * "zh_CN": "/web/js/vee-validate/zh_CN"
 * 
 * 内置规则:
 *  after{target} - 比target要大的一个合法日期，格式(DD/MM/YYYY)
 *  alpha - 只包含英文字符
 *	alpha_dash - 可以包含英文、数字、下划线、破折号
 *	alpha_num - 可以包含英文和数字
 *	before:{target} - 和after相反
 *	between:{min},{max} - 在min和max之间的数字
 *	confirmed:{target} - 必须和target一样
 *	date_between:{min,max} - 日期在min和max之间
 *	date_format:{format} - 合法的format格式化日期
 *	decimal:{decimals?} - 数字，而且是decimals进制
 *	digits:{length} - 长度为length的数字
 *	dimensions:{width},{height} - 符合宽高规定的图片
 *	email - 不解释
 *	ext:[extensions] - 后缀名
 *	image - 图片
 *	in:[list] - 包含在数组list内的值
 *	ip - ipv4地址
 *	max:{length} - 最大长度为length的字符
 *	mimes:[list] - 文件类型
 *	min - max相反
 *	mot_in - in相反
 *	numeric - 只允许数字
 *	regex:{pattern} - 值必须符合正则pattern
 *	required - 不解释
 *	size:{kb} - 文件大小不超过
 *	url:{domain?} - (指定域名的)url
 * 
 * 注意:
 * 1,必须在入口js引入!
 * 2,貌似不能使用异步组件!!
 */
define(function(require, exports, module) {
	var Vue = require('vue');
	var VeeValidate = require('vee-validate');
	var zh_CN = require('zh_CN');
	var Validator = VeeValidate.Validator;
	
	Validator.localize('cn',zh_CN);
	
	Vue.use(VeeValidate,{
		events: 'change'
	});
	
	//修改必填和邮箱的默认提示信息
	var dict = {
		cn: {
	      messages: {
	    	//邮箱规则  
	        email: function(field){
	        	return '请输入正确的邮箱格式';
	        },
	        //必填项规则
	        required:function(field){
	        	return "请输入" + field;
	        } 
	      },
	      //字段定义，返回提示信息的时候，会参考此定义
	      attributes:{
	        email:'邮箱',
	        password:'密码',
	        name: '账号',
	        phone: '手机号码',
	        idCard:'身份证号'
	      }
	   }
	};
	Validator.localize(dict);
	
	//手机号验证
	Validator.extend('phone', {
		validate: function(value){
			return value.length === 11 && /^((13|14|15|17|18)[0-9]{1}\d{8})$/.test(value);
		},
	    getMessage: function(field){
	    	return "请输入正确的" + field ;
	    }
	});
	
	Validator.extend('idCard', {
		validate: function(value){
			return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value);
		},
	    getMessage: function(field){
	    	return field + "格式不正确";
	    }
	});
	
	return Validator;
});
